require(pacman)
p_load(tidytuesdayR, magick, trashpanda, tidyverse, janitor, tidytext, slider, here, TTR)
options(scipen = 999)Extreme Weather Attribution Studies
Load Packages
Load Data
tuesdata <- tidytuesdayR::tt_load('2025-08-12')
attribution_studies <- tuesdata$attribution_studies
attribution_studies_raw <- tuesdata$attribution_studies_rawData Exploration
attribution_studies |>
distinct(event_type)# A tibble: 12 × 1
event_type
<chr>
1 Heat
2 Rain & flooding
3 Storm
4 Drought
5 Cold, snow & ice
6 Oceans
7 Impact
8 Compound
9 Wildfire
10 Atmosphere
11 Sunshine
12 River flow
attribution_studies |>
distinct(classification)# A tibble: 4 × 1
classification
<chr>
1 More severe or more likely to occur
2 No discernible human influence
3 Insufficient data/inconclusive
4 Decrease, less severe or less likely to occur
Plot
plot <- attribution_studies |>
filter(event_type %in% c("Cold, snow & ice", "Drought", "Heat", "Rain & flooding", "Wildfire")) |>
reframe(n = n(),
.by = c("publication_year", "event_type", "classification")) |>
ggplot(aes(x = publication_year, y = n, colour = classification)) +
geom_point(aes(size = n)) +
geom_smooth(aes(groups = classification), method = "lm", se = FALSE) +
facet_wrap(~event_type) +
labs(x = "Publication Year",
y = "Number of Studies",
title = "Charting Attribution: Studies Linking Climate Change to Extreme Weather (2000–2024)",
subtitle = "Studies across all event types have grown, with most finding that climate change increases the severity or likelihood of extremes.",
size = "Number of Attribution Studies",
colour = "Study Finding") +
scale_colour_brewer(palette = "Set2") +
theme_bw(base_size = 30) +
theme(panel.grid.major.x = element_blank(),
panel.grid.major.y = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.minor.y = element_blank(),
strip.text = element_text(face = "bold", size = 20),
plot.title = element_text(face = "bold", hjust = 0.5, size = 30),
plot.subtitle = element_text(hjust = 0.5, size = 30),
legend.position = "inside",
legend.position.inside = c(.85, .25),
legend.title.position = "top",
legend.title = element_text(hjust = 0),
legend.key.width = unit(2.5, "lines"),
legend.key.height = unit(1, "lines"),
axis.line = element_line(colour = "black"),
plot.margin = margin(0.1, 2, 0.1, 0.1, "cm")) +
guides(color = guide_legend(override.aes = list(size = 7)))
# Save and display images
current_dir <- dirname(knitr::current_input())
plot_name <- "att_studies.png"
ggsave(plot = plot,
dpi = "screen",
width = 25,
height = 20,
device = ragg::agg_png,
filename = file.path(current_dir, plot_name))
# Read the big plot
img <- image_read(file.path(current_dir, plot_name))
# Force 16:9 aspect ratio with minimal padding
# Target size: 1200x675 px (16:9)
img_card <- image_scale(img, "1200x675") # scale to fit inside 16:9
img_card <- image_extent(
img_card,
geometry = "1200x675",
gravity = "center"
)
# Save as card preview
image_write(img_card, path = file.path(current_dir, "preview.png"))
knitr::include_graphics(
file.path(current_dir, plot_name)
)
References
trashpanda::cite_packages(format = "rmd")Ulrich J (2023). TTR: Technical Trading Rules. doi:10.32614/CRAN.package.TTR https://doi.org/10.32614/CRAN.package.TTR, R package version 0.24.4, https://CRAN.R-project.org/package=TTR.
Müller K (2025). here: A Simpler Way to Find Your Files. doi:10.32614/CRAN.package.here https://doi.org/10.32614/CRAN.package.here, R package version 1.0.2, https://CRAN.R-project.org/package=here.
Vaughan D (2025). slider: Sliding Window Functions. doi:10.32614/CRAN.package.slider https://doi.org/10.32614/CRAN.package.slider, R package version 0.3.3, https://CRAN.R-project.org/package=slider.
Silge J, Robinson D (2016). “tidytext: Text Mining and Analysis Using Tidy Data Principles in R.” JOSS, 1(3). doi:10.21105/joss.00037 https://doi.org/10.21105/joss.00037, http://dx.doi.org/10.21105/joss.00037.
Firke S (2024). janitor: Simple Tools for Examining and Cleaning Dirty Data. doi:10.32614/CRAN.package.janitor https://doi.org/10.32614/CRAN.package.janitor, R package version 2.2.1, https://CRAN.R-project.org/package=janitor.
Grolemund G, Wickham H (2011). “Dates and Times Made Easy with lubridate.” Journal of Statistical Software, 40(3), 1-25. https://www.jstatsoft.org/v40/i03/.
Wickham H (2025). forcats: Tools for Working with Categorical Variables (Factors). doi:10.32614/CRAN.package.forcats https://doi.org/10.32614/CRAN.package.forcats, R package version 1.0.1, https://CRAN.R-project.org/package=forcats.
Wickham H (2025). stringr: Simple, Consistent Wrappers for Common String Operations. doi:10.32614/CRAN.package.stringr https://doi.org/10.32614/CRAN.package.stringr, R package version 1.6.0, https://CRAN.R-project.org/package=stringr.
Wickham H, François R, Henry L, Müller K, Vaughan D (2023). dplyr: A Grammar of Data Manipulation. doi:10.32614/CRAN.package.dplyr https://doi.org/10.32614/CRAN.package.dplyr, R package version 1.1.4, https://CRAN.R-project.org/package=dplyr.
Wickham H, Henry L (2026). purrr: Functional Programming Tools. doi:10.32614/CRAN.package.purrr https://doi.org/10.32614/CRAN.package.purrr, R package version 1.2.1, https://CRAN.R-project.org/package=purrr.
Wickham H, Hester J, Bryan J (2025). readr: Read Rectangular Text Data. doi:10.32614/CRAN.package.readr https://doi.org/10.32614/CRAN.package.readr, R package version 2.1.6, https://CRAN.R-project.org/package=readr.
Wickham H, Vaughan D, Girlich M (2025). tidyr: Tidy Messy Data. doi:10.32614/CRAN.package.tidyr https://doi.org/10.32614/CRAN.package.tidyr, R package version 1.3.2, https://CRAN.R-project.org/package=tidyr.
Müller K, Wickham H (2026). tibble: Simple Data Frames. doi:10.32614/CRAN.package.tibble https://doi.org/10.32614/CRAN.package.tibble, R package version 3.3.1, https://CRAN.R-project.org/package=tibble.
Wickham H (2016). ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York. ISBN 978-3-319-24277-4, https://ggplot2.tidyverse.org.
Wickham H, Averick M, Bryan J, Chang W, McGowan LD, François R, Grolemund G, Hayes A, Henry L, Hester J, Kuhn M, Pedersen TL, Miller E, Bache SM, Müller K, Ooms J, Robinson D, Seidel DP, Spinu V, Takahashi K, Vaughan D, Wilke C, Woo K, Yutani H (2019). “Welcome to the tidyverse.” Journal of Open Source Software, 4(43), 1686. doi:10.21105/joss.01686 https://doi.org/10.21105/joss.01686.
Baril C (????). trashpanda: Cole’s Personal Collection of R Functions, Themes, and Palettes. R package version 0.0.1, https://colebaril.github.io/trashpanda/.
Ooms J (2025). magick: Advanced Graphics and Image-Processing in R. doi:10.32614/CRAN.package.magick https://doi.org/10.32614/CRAN.package.magick, R package version 2.9.0, https://CRAN.R-project.org/package=magick.
Harmon J, Hughes E (2025). tidytuesdayR: Access the Weekly ‘TidyTuesday’ Project Dataset. doi:10.32614/CRAN.package.tidytuesdayR https://doi.org/10.32614/CRAN.package.tidytuesdayR, R package version 1.2.1, https://CRAN.R-project.org/package=tidytuesdayR.
Rinker TW, Kurkiewicz D (2018). pacman: Package Management for R. version 0.5.0, http://github.com/trinker/pacman.